我正在尝试解析日期,但出现时区异常答案

您所在的位置:网站首页 linux 时区查看 我正在尝试解析日期,但出现时区异常答案

我正在尝试解析日期,但出现时区异常答案

2023-04-03 11:33| 来源: 网络整理| 查看: 265

tl;博士 ZonedDateTime.parse( "Thu Feb 25 12:58:28 MST 2016" , DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" , Locale.US ) )

2016-02-25T12:58:28-07:00[美国/丹佛]

java.time

现代方法使用 java.time 类。对于 Android,请参阅下面的最后一个项目符号。

String input = "Thu Feb 25 12:58:28 MST 2016" ; DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" , Locale.US ) ; ZonedDateTime zdt = ZonedDateTime.parse( input , f ) ;

查看此代码在 IdeOne.com 上实时运行。 (但请注意,该站点上的 JVM 已硬连接到 Locale.US,其他任何内容都将被忽略。)

zdt.toString(): 2016-02-25T12:58:28-07:00[美国/丹佛]

您的输入字符串格式很糟糕。如果可能,更改为使用标准的ISO 8601 格式。标准格式实用,易于机器解析,并且易于跨文化的人类阅读。方便的是,这些格式在解析/生成字符串时默认在 java.time 类中使用。

以continent/region 的格式指定proper time zone name,例如America/Montreal、Africa/Casablanca 或Pacific/Auckland。切勿使用 3-4 个字母的缩写,例如 MST 或 EST 或 IST,因为它们不是真正的时区,没有标准化,甚至不是唯一的 (!)。

ZoneId zEdmonton = ZoneId.of( "America/Edmonton" ) ; ZoneId zDenver = ZoneId.of( "America/Denver" ) ; ZoneId zMazatlan = ZoneId.of( "America/Mazatlan" ) ; 关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。

Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。

要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。

从哪里获得 java.time 类?

Java SE 8、Java SE 9 及更高版本 内置。 标准 Java API 的一部分,带有捆绑实现。 Java 9 添加了一些小功能和修复。 Java SE 6 和 Java SE 7 ThreeTen-Backport 中的大部分 java.time 功能都向后移植到 Java 6 和 7。 Android ThreeTenABP 项目专门为 Android 改编了 ThreeTen-Backport(如上所述)。 见How to use ThreeTenABP…。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3